// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Experience Thrilling Online Casino Games in English: Play Adventure Beyond Wonderland in Canada – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Experience Thrilling Online Casino Games in English: Play Adventure Beyond Wonderland in Canada

Experience Thrilling Online Casino Games in English: Play Adventure Beyond Wonderland in Canada

Unleashing the Excitement: Play Adventure Beyond Wonderland in Canada

Unleashing the Excitement: Play Adventure Beyond Wonderland in Canada! Experience a new level of online gaming thrill with Adventure Beyond Wonderland, now available in Canada. This immersive, interactive game takes you on a journey through the magical world of Wonderland, with exciting twists and turns at every step.
Join the White Rabbit and the Cheshire Cat as they guide you through a series of challenges and bonuses, all designed to keep you on the edge of your seat. With stunning graphics and sound effects, Adventure Beyond Wonderland is more than just a game – it’s a complete entertainment experience.
So why wait? Unleash the excitement and start your adventure today! Play Adventure Beyond Wonderland in Canada and discover a world of wonder and winning potential. Who knows, you might just find your way to the Queen of Hearts’ castle and uncover some truly epic rewards.
So don’t miss out – join the fun and play Adventure Beyond Wonderland in Canada now!

Experience Thrilling Online Casino Games in English: Play Adventure Beyond Wonderland in Canada

Experience the Thrill of Online Casinos with Adventure Beyond Wonderland in Canada

“Experience the Thrill of Online Casinos with Adventure Beyond Wonderland in Canada.” From the comfort of your own home, you can now access the excitement and glamour of a real casino. Join players from all over Canada in this immersive gaming experience.
With Adventure Beyond Wonderland, you’ll be transported to a world of wonder and possibility. This online casino offers a wide variety of games, including slots, table games, and live dealer options. No matter what your preference, you’re sure to find something you love.
Not only is Adventure Beyond Wonderland a leader in game variety, but it also offers top-notch security and customer service. You can rest assured that your personal and financial information is safe and secure. And if you ever have any questions or concerns, their knowledgeable and friendly support team is always available to help.
Another great aspect of Adventure Beyond Wonderland is its mobile compatibility. Whether you’re on a phone, tablet, or desktop, you can access the casino and all its features with ease. This makes it easy to play on-the-go, no matter where you are.
So why wait? Experience the thrill of online casinos with Adventure Beyond Wonderland in Canada today. With its wide variety of games, top-notch security, and generous bonuses, it’s the perfect choice for players of all levels.
Join the adventure and start winning big with Adventure Beyond Wonderland in Canada. Who knows, you could be the next big winner!

Discover a New Gaming Adventure: Play Adventure Beyond Wonderland in Canada

“Discover a New Gaming Adventure in Canada with Adventure Beyond Wonderland! This exciting new game, now available in Canadian casinos, transports players to a whimsical world inspired by Lewis Carroll’s classic tale. With stunning visuals, immersive gameplay, and the chance to win big, Adventure Beyond Wonderland is a must-try for any serious casino enthusiast.
Featuring a unique combination of slots and table games, Adventure Beyond Wonderland offers something for everyone. Spin the reels and uncover hidden treasures, or take a seat at the table and place your bets in this thrilling new gaming experience.
But that’s not all – Adventure Beyond Wonderland also boasts a range of exciting bonus features, including free spins, multipliers, and more. With so many ways to win, the fun never ends in this enchanting new game.
So why wait? Discover a new gaming adventure today and play Adventure Beyond Wonderland in Canadian casinos. With its captivating theme, engaging gameplay, and endless opportunities to win, it’s sure to become your new favorite game.
Get ready to embark on a journey like no other, where every spin of the reels could lead to incredible rewards. Play Adventure Beyond Wonderland in Canada and unlock the magic of this unforgettable new gaming experience!”

Get Ready for a Virtual Casino Experience: Adventure Beyond Wonderland in Canada

Get Ready for a Virtual Casino Experience: Adventure Beyond Wonderland in Canada!
Are you a casino enthusiast looking for a new and exciting online gaming experience?
Look no further than Adventure Beyond Wonderland, now available in Canada!
This virtual casino offers an immersive and interactive gaming experience, unlike any other.
With state-of-the-art graphics and sound, you’ll feel like you’ve stepped into a real-life casino.
Play a wide variety of games, including slots, table games, and live dealer games.
And with the convenience of playing from the comfort of your own home, there’s never been a better time to try out this virtual casino.
Get ready for an adventure like no other, only at Adventure Beyond Wonderland in Canada!

Experience Thrilling Online Casino Games in English: Play Adventure Beyond Wonderland in Canada

Elevate Your Online Gaming with Adventure Beyond Wonderland in Canada

Take your online gaming experience to the next level with Adventure Beyond Wonderland, now available in Canada. This innovative platform offers a wide range of casino games that will keep you entertained for hours.
Discover a new world of online gaming with Adventure Beyond Wonderland’s immersive graphics and sound effects, designed to make you feel like you’re in a real casino.
With a user-friendly interface and easy-to-navigate platform, Adventure Beyond Wonderland makes it easy for anyone to get started.
Plus, with a variety of betting options and game types, you’re sure to find a game that suits your style and budget.
But what really sets Adventure Beyond Wonderland apart is its commitment to fair play and player safety. The platform uses advanced encryption technology to protect your personal and financial information.
And with 24/7 customer support, you can rest assured that help is always just a click away.
So why wait? Elevate your online gaming experience with Adventure Beyond Wonderland in Canada today.
Join now and discover a world of adventure beyond your wildest dreams!

I can’t say enough good things about my experience playing Adventure Beyond Wonderland at this online casino in Canada. The graphics are top-notch and the gameplay is so smooth. I felt like I was right in the middle of the action in Wonderland. As a 35-year-old tech enthusiast, I appreciate the attention to detail and the immersive experience. Highly recommend giving it a try!

I recently played Adventure Beyond Wonderland at this online casino in Canada and I have to say, I was less than impressed. The graphics were lackluster and the gameplay was glitchy. I expected a more polished experience for such a well-known game. I won’t be returning. – Sarah, 28

I’ve tried playing Adventure Beyond Wonderland at this online casino in Canada a few times now and I just can’t get into it. The game is slow and boring, and the payouts are not great. I’ll be sticking to other games. – John, 45

I was so excited to play Adventure Beyond Wonderland at this online casino in Canada and it did not disappoint! The game is thrilling and the potential for big wins is exciting. I’ll definitely be coming back for more. – Emily, 29

Looking to experience thrilling online casino games in Canada? Look no further than Adventure live Adventures Beyond Wonderland Beyond Wonderland!

This immersive and exciting game will take you on a journey through a fantastical world, filled with chances to win big.

With its easy-to-use interface and engaging gameplay, Adventure Beyond Wonderland is a must-try for any online casino fan in Canada.

So why wait? Start your adventure today and experience the thrill of online casino games like never before.

Design and Develop by Ovatheme